﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace BoletoElectronicoDesktop.Facturacion
{
    public partial class FormFacturacion : Form
    {
        public FormFacturacion()
        {
            InitializeComponent();
            //oculto el calendario
            monthCalendar1.Hide();
        }

        private void FormFacturacion_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
            txtFecha.Enabled = false;
            txtBeneficiario.Enabled = true;
            
            
        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {
            //limpio los textos.
            txtBeneficiario.Text = "";
            txtFecha.Text = "";
            txtMonto.Text = "";
            txtNumTarjeta.Text = "";
            cbPostNet.DataSource = null;

        }

        private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
        {
            //pongo en el text box la fecha seleccionada
            string fecha = monthCalendar1.SelectionRange.Start.ToShortDateString();
            txtFecha.Text = Funciones.convierteFecha(fecha);
            monthCalendar1.Hide();
        }

        private void txtSeleccionarFecha_Click(object sender, EventArgs e)
        {
            //trae a la vista el calendario para elegir
            monthCalendar1.Visible = true;
        }

        private void txtSeleccionarBen_Click(object sender, EventArgs e)
        {
            FormSeleccionarBeneficiario form = new FormSeleccionarBeneficiario();
            form.ShowDialog(this);
            txtBeneficiario.Text = form.idbeneficiario;


            
         
        }

        private void txtNumTarjeta_KeyPress(object sender, KeyPressEventArgs e)
        {
            Funciones.validarNumero(e);
        }

        private void txtMonto_KeyPress(object sender, KeyPressEventArgs e)
        {   
            Funciones.validarDecimal(e);
        }

        private void btnFacturar_Click(object sender, EventArgs e)
        {
            bool continuar = true;

            //valido que ningún campo obligatorio no esté completo
            if ((txtBeneficiario.Text == "") || (cbPostNet.Text == "") ||(txtMonto.Text=="")|| (txtNumTarjeta.Text == "")||(txtFecha.Text==""))
            {
                MessageBox.Show("Complete todos los campos obligatorios", "Información");
                continuar = false;
            }
            //si están todos los campos completos, procedo a hacer el Alta
            if (continuar)
            {
                //Comprobamos que la tarjeta exista y su monto es mayor o igual a lo que quiere comprar
                   if ((chequeoTarjetaPuedaComprar(txtNumTarjeta.Text, txtMonto.Text)) != 0 )
                   {
                       //procedo a la carga de la operacion     
                    FacturacionDAO.InsertarCompra( cbPostNet.Text, txtNumTarjeta.Text, txtFecha.Text, txtMonto.Text.Replace(',','.'));
                    
                    //me fijo en que monto queda la tarjeta ahora
                    DataTable DT = TarjetaDAO.FiltrarTarjetasHabilitadas(txtNumTarjeta.Text, "", "");
                    MessageBox.Show("Facturacion exitosa!");
                    string montopamostrar = DT.Rows[0]["monto"].ToString();
                    string mensaje = "ahora tu saldo es: " + montopamostrar;
                    MessageBox.Show(mensaje);
                   
                    //limpio los textbox
                    txtBeneficiario.Text="";
                    cbPostNet.Text="";
                    txtNumTarjeta.Text="";
                    txtFecha.Text="";
                    txtMonto.Text="";
                    cbPostNet.DataSource = null;
                  }
                
            }
        } //fin de facturar

        public static int chequeoTarjetaPuedaComprar(string NroTarjeta, string Monto)
        {

            DataTable DT = TarjetaDAO.FiltrarTarjetasHabilitadas(NroTarjeta, "", "");
            int existe = DT.Rows.Count;
            if (existe != 0)
            { //si existe me fijo tenga carga suficiente plata

                double montoactual = Convert.ToDouble(DT.Rows[0]["monto"]);
                double montoAFacturar = Convert.ToDouble(Monto);
                double res= montoactual - montoAFacturar;
                if (res >= 0) { return existe; }
                    
                  else{ MessageBox.Show ("La tarjeta no posee tanto monto para realizar tal compra");
                        return 0;
                       }
             }
                       
            else //la tarjeta no existe o no esta habilitada => no puedo seguir
            {
                MessageBox.Show("La tarjeta ingresada no existe o no esta habilitada. Reingrese otro numero.");
                return existe;
            }

        }

        private void cbPostNet_Click(object sender, EventArgs e)
        {
            if (txtBeneficiario.Text !="")
             {
                //cargo los postNet en el ComboBox
                DataTable ListaPostNet = FacturacionDAO.ObtenerListaPostNet(txtBeneficiario.Text);
                cbPostNet.DataSource = ListaPostNet;
                cbPostNet.DisplayMember = "PostnetNumeroSerie";
             }
        }

        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {

        }


         //fin funcion
    
    
    
    
    
    
    }
}


       